import java.util.Map;
import java.util.HashMap;

public class TS {
	
	private Map<String, Par> tabla;
	
	public TS() {
		tabla = new HashMap<String, Par>(); // Tabla<Iden, Pair<Tipo, Dir>>
	}

	private TS(Map<String, Par> tabla) {
		this.tabla = tabla;
	}

	public boolean estaEn(String iden) {
		return tabla.containsKey(iden);
	}

	public TS aniade(String iden, TipoEnum tipo, int dir) {
		TS result = new TS(new HashMap<String, Par>(tabla));		
		result.tabla.put(iden, new Par(tipo, dir));
		return result;
	}

	public TipoEnum tipoDe(String iden) {
		return tabla.get(iden).getTipo();
	}

	public int dirDe(String iden) {
		return tabla.get(iden).getDir();
	}

	public String toString() {
		return tabla.toString();
	}
	
	/** Clases internas **/
	
		private class Par {
			
			private TipoEnum tipo;
			private int dir;
			
			private Par(TipoEnum tipo, int dir) {
				this.tipo = tipo;
				this.dir = dir;
			}

			private TipoEnum getTipo() {
				return tipo;
			}
		
			private int getDir() {
				return dir;
			}			
	}

}